home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / boot / diskBoot.OpenProm / RCS / local.mk,v < prev    next >
Text File  |  1990-11-27  |  11KB  |  441 lines

  1. head     1.4;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @@;
  7.  
  8.  
  9. 1.4
  10. date     90.11.27.11.17.35;  author jhh;  state Exp;
  11. branches ;
  12. next     1.3;
  13.  
  14. 1.3
  15. date     90.07.17.15.42.32;  author mendel;  state Exp;
  16. branches ;
  17. next     1.2;
  18.  
  19. 1.2
  20. date     90.02.15.02.39.51;  author rab;  state Exp;
  21. branches ;
  22. next     1.1;
  23.  
  24. 1.1
  25. date     90.02.15.02.20.06;  author rab;  state Exp;
  26. branches ;
  27. next     ;
  28.  
  29.  
  30. desc
  31. @@
  32.  
  33.  
  34. 1.4
  35. log
  36. @got it to compile, moved location for sun3 kernel
  37. @
  38. text
  39. @#
  40. # Makefile for boot programs in general.
  41. # This is included by Makefile.boot after $(TM).md/md.mk is included
  42. # The following variables should be defined already:
  43. #    NAME        program to be created
  44. #    OBJS        object files from which to create it
  45. #    CLEANOBJS    object files to be removed as part of "make clean"
  46. #            (need not just be object files)
  47. #    SRCS        sources for dependency generation
  48. #    TM        target machine type for object files, etc.
  49. #    TM        target machine type for object files etc.
  50. #    MACHINES    list of all target machines currently available
  51. #    INSTALLDIR    place to install program
  52. #    LINKSTART    address at which the boot program should be linked.
  53. #
  54. # Optional variables that may be defined by the invoker:
  55. #    XAFLAGS        additional flags to pass to assembler
  56. #    XCFLAGS        additional flags to pass to linker
  57. #    DEPFLAGS    additional flags to pass to makedepend
  58. #    no_targets    if defined, this file will not define all of the
  59. #            basic targets (make, make clean, etc.)
  60. #    use_version    if defined, then this file will set things up
  61. #            to include a version number that is automatically
  62. #            incremented
  63. #
  64. # $Header: /sprite/src/boot/sunprom/RCS/local.mk,v 1.3 90/07/17 15:42:32 mendel Exp $
  65. #
  66.  
  67. #
  68. # The variables below should be defined in md.mk, but they are given
  69. # default values just in case md.mk doesn't exist yet.
  70. #
  71. HDRS        ?=
  72. OBJS        ?=
  73. SRCS        ?=
  74.  
  75. #
  76. # First define search paths for libraries, include files, lint libraries,
  77. # and even sources.
  78. #
  79. .PATH.h        :
  80. .PATH.h        : . $(TM).md /sprite/src/kernel/Include /sprite/src/kernel/Include/$(TM).md /sprite/src/kernel/dev /sprite/src/kernel/dev/$(TM).md /sprite/src/kernel/fs /sprite/src/kernel/fs/$(TM).md /sprite/lib/include /sprite/lib/include/$(TM).md 
  81. .PATH.ln    : /sprite/lib/lint
  82. .PATH.c        :
  83. .PATH.c        : $(TM).md
  84. .PATH.s        :
  85. .PATH.s        : $(TM).md
  86.  
  87. #
  88. # Important directories. 
  89. #
  90. MISCLIBDIR    = /sprite/lib/misc
  91. BINDIR        = /sprite/cmds.$(MACHINE)
  92.  
  93. #
  94. # System programs -- assign conditionally so they may be redefined in
  95. # including makefile
  96. #
  97. AS        ?= $(BINDIR)/as
  98. CC        ?= $(BINDIR)/cc
  99. CHGRP        ?= $(BINDIR)/chgrp
  100. CHMOD        ?= $(BINDIR)/chmod
  101. CHOWN        ?= $(BINDIR)/chown
  102. CP        ?= $(BINDIR)/cp
  103. CPP        ?= $(BINDIR)/cpp -traditional -$
  104. CTAGS        ?= $(BINDIR)/ctags
  105. ECHO        ?= $(BINDIR)/echo
  106. LD        ?= $(BINDIR)/ld
  107. LINT        ?= $(BINDIR)/lint
  108. MAKEDEPEND    ?= $(BINDIR)/makedepend
  109. MKVERSION    ?= $(BINDIR)/mkversion
  110. MV        ?= $(BINDIR)/mv
  111. RM        ?= $(BINDIR)/rm
  112. SED        ?= $(BINDIR)/sed
  113. TEST            ?= $(BINDIR)/test
  114. TOUCH        ?= $(BINDIR)/touch
  115. UPDATE        ?= $(BINDIR)/update
  116.  
  117. #
  118. # Several variables (such as where to install) are set based on the
  119. # TYPE variable.  Of course, any of these variables can be overridden
  120. # by explicit assignments.
  121. #
  122. TYPE        ?= boot
  123. INSTALLDIR    ?= /sprite/boot
  124. TMINSTALLDIR    ?= /sprite/boot/$(TM).md
  125.  
  126. #
  127. # Figure out what stuff we'll pass to sub-makes.
  128. #
  129. PASSVARS    = 'INSTALLDIR=$(INSTALLDIR)' 'TM=$(TM)' $(.MAKEFLAGS)
  130. #ifdef        XCFLAGS
  131. PASSVARS    += 'XCFLAGS=$(XCFLAGS)'
  132. #endif
  133. #ifdef        XAFLAGS
  134. PASSVARS    += 'XAFLAGS=$(XAFLAGS)'
  135. #endif
  136. #ifdef        NOBACKUP
  137. PASSVARS    += 'NOBACKUP=$(NOBACKUP)'
  138. #endif
  139.  
  140. #
  141. # Flags. These are ones that are needed by *all* boot programs. Any other
  142. # ones should be added with the += operator in the local.mk file.
  143. # The FLAGS variables are defined with the += operator in case this file
  144. # is included after the main makefile has already defined them...
  145.  
  146. #include     <tm.mk>
  147.  
  148. XCFLAGS        ?= -L/sprite/lib/$(TM).md
  149. XAFLAGS        ?=
  150. LINTFLAGS    ?= -m$(TM)
  151. INSTALLFLAGS    ?=
  152. LDFLAGS        ?=
  153. AFLAGS        += $(TMAFLAGS) $(XAFLAGS)
  154. CFLAGS        += $(TMCFLAGS) $(XCFLAGS) -I. -I$(TM).md  -DKERNEL \
  155.         -I../../kernel/Include/$(TM).md -I../../kernel/Include \
  156.         -I../../kernel/fs -I../../kernel/fs/$(TM).md \
  157.         -I../../kernel/dev -I../../kernel/dev/$(TM).md -DNO_PRINTF -O
  158.  
  159. # KERNELSTART is the absolute address at which the kernel expects to have
  160. # its code loaded.
  161. # LINKSTART is where the boot program is loaded into memory.  It has
  162. # to be loaded high enough so that the kernel image it loads does
  163. # not overwrite the boot program.  (If it does, it generally happens
  164. # as it zeros out the bss segment.  The PROM will abort with Exception 10
  165. # or something immediately after the boot program prints out the kernel sizes.)
  166. # BOOTDIR is the directory in which the boot things live.
  167. #
  168.  
  169. #if !empty(TM:Msun3)
  170. KERNELSTART    ?= 0x4000
  171. LINKSTART    ?= $(KERNELSTART:S/0x/d/)
  172. #else
  173. KERNELSTART    ?= 0x4000
  174. LINKSTART    ?= $(KERNELSTART:S/0x/20/)
  175. #endif
  176.  
  177. CFLAGS        += -DBOOT_CODE=0x$(LINKSTART) \
  178.         -DKERNEL_START=$(KERNELSTART) -DBOOTDIR=\"$(INSTALLDIR)\"
  179.  
  180.  
  181. #
  182. # The .INCLUDES variable already includes directories that should be
  183. # used by cc and other programs by default.  Remove them, just so that
  184. # the output looks cleaner.
  185.  
  186. #if empty(TM:Msun4)
  187. CFLAGS        += $(.INCLUDES:S|^-I/sprite/lib/include$||g:S|^-I/sprite/lib/include/$(TM).md$||g)
  188. #else
  189. CFLAGS        += $(.INCLUDES)
  190. #endif
  191.  
  192. #
  193. # Transformation rules: these have special features to place .o files
  194. # in md subdirectories, run preprocessor over .s files, etc.
  195. # There are no profile rules for boot programs because they aren't profiled.
  196. #
  197.  
  198. .c.o        :
  199.     $(RM) -f $(.TARGET)
  200.     $(CC) $(CFLAGS) -c $(.IMPSRC) -o $(.TARGET)
  201. .s.o    :
  202.     $(CPP) $(CFLAGS:M-[ID]*) -D$(TM) -D_ASM $(.IMPSRC) > $(.PREFIX).pp
  203.     $(AS) -o $(.TARGET) $(AFLAGS) $(.PREFIX).pp
  204.     $(RM) -f $(.PREFIX).pp
  205.  
  206. #
  207. # The following targets are .USE rules for creating things.
  208. #
  209.  
  210. #
  211. # MAKEBOOT usage:
  212. #    <program> : <objects> <libraries> MAKEBOOT
  213. #
  214. # Similar to MAKECMD, except it doesn't create the version.[ho] files,
  215. # and the variable LINKSTART is used to define where the boot program
  216. # gets loaded.
  217. #
  218. MAKEBOOT    :  .USE -lc
  219.     rm -f $(.TARGET)
  220.     $(LD) -N -e start -T $(LINKSTART) $(CFLAGS:M-L*) $(LDFLAGS) \
  221.         -o $(.TARGET) $(.ALLSRC:N-lc:Nend.o) -lc $(.ALLSRC:Mend.o)
  222.  
  223. #
  224. # MAKEINSTALL usage:
  225. #    install : <dependencies> MAKEINSTALL
  226. #
  227. # The program is installed in $(TMINSTALLDIR) and backed-up to
  228. # $(TMINSTALLDIR).old
  229. #
  230. #ifndef NOBACKUP
  231. BACKUP        = -b $(TMINSTALLDIR).old
  232. #else
  233. BACKUP        =
  234. #endif  NOBACKUP
  235.  
  236. MAKEINSTALL    : .USE
  237.     /sprite/admin.$(MACHINE)/makeboot $(TM).md/$(NAME) $(TMINSTALLDIR)/$(NAME)
  238.  
  239. #
  240. # MAKELINT usage:
  241. #    <fluff-file> : <sources to be linted> MAKELINT
  242. #
  243. # <fluff-file> is the place to store the output from the lint.
  244. #
  245. MAKELINT    : .USE
  246.     $(RM) -f $(.TARGET)
  247.     $(LINT) $(LINTFLAGS) $(CFLAGS:M-[ID]*) $(.ALLSRC) > $(.TARGET) 2>&1
  248.  
  249. #
  250. # MAKEDEPEND usage:
  251. #    <dependency-file> : <sources> MAKEDEPEND
  252. #
  253. # Generate dependency file suitable for inclusion in future makes.
  254.  
  255. MAKEDEPEND    : .USE
  256.     @@$(TOUCH) $(DEPFILE)
  257.     $(MAKEDEPEND) $(CFLAGS:M-[ID]*) -m $(TM) -w60 -f $(DEPFILE) $(.ALLSRC)
  258.     @@$(MV) -f $(DEPFILE) $(DEPFILE).tmp
  259.     @@$(SED) -e '/^#/!s|^.|$(TM).md/&|' <$(DEPFILE).tmp > $(DEPFILE)
  260.     @@$(RM) -f $(DEPFILE).tmp
  261.  
  262. #if !defined(no_targets) && defined(NAME)
  263. #
  264. # We should define the main targets (make, make install, etc.).  See the
  265. # mkmf man page for details on what these do.
  266. #
  267. LIBS            ?=
  268.  
  269. #
  270. # start.o must come first
  271. default            : $(TM).md/$(NAME)
  272. $(TM).md/$(NAME)    : $(TM).md/start.o $(OBJS:S/$(TM).md\/start.o//:S/makeBoot.o//) MAKEBOOT
  273.  
  274.  
  275. clean            :: .NOEXPORT tidy 
  276.     $(RM) -f $(TM).md/$(NAME) $(TM).md/$(NAME)$(PROFSUFFIX)
  277.  
  278. tidy            :: .NOEXPORT 
  279.     $(RM) -f $(CLEANOBJS) $(CLEANOBJS:M*.o:S/.o$/.po/g) \
  280.             y.tab.c lex.yy.c core \
  281.         $(TM).md/lint \
  282.         a.out *~ $(TM).md/*~ version.h gmon.out mon.out
  283.  
  284. DEPFILE = $(TM).md/dependencies.mk
  285.  
  286. depend            : $(DEPFILE)
  287. $(DEPFILE)        ! $(SRCS:M*.c) $(SRCS:M*.s) MAKEDEPEND
  288.  
  289.  
  290. #
  291. # For "install", a couple of tricks.  First, allow local.mk to disable
  292. # by setting no_install.  Second, use :: instead of : so that local.mk
  293. # can augment install with additional stuff.  Third, don't install if
  294. # TMINSTALLDIR isn't set.
  295. #
  296. #ifndef no_install
  297. #ifdef TMINSTALLDIR
  298. install            :: $(TM).md/$(NAME) installman MAKEINSTALL
  299. #else
  300. install            :: .SILENT
  301.     echo "Can't install $(NAME):  no install directory defined"
  302. #endif TMINSTALLDIR
  303. #endif no_install
  304.  
  305.  
  306. #if empty(MANPAGES)
  307. installman        :: .SILENT
  308.     echo "There's no man page for $(NAME).  Please write one."
  309. #elif !empty(MANPAGES:MNONE)
  310. installman        ::
  311.  
  312. #elif defined(INSTALLMAN)
  313. installman        :: .SILENT
  314.     $(UPDATE) -m 444 -l $(INSTALLMANFLAGS) $(MANPAGES) $(INSTALLMAN)
  315. #else
  316. installman        :: .SILENT
  317.     echo "Can't install man page(s): no install directory defined"
  318. #endif
  319.  
  320.  
  321. lint            : $(TM).md/lint
  322. $(TM).md/lint        : $(SRCS:M*.c) $(HDRS) $(LIBS:M-l*) MAKELINT
  323.  
  324.  
  325. mkmf            :: .SILENT
  326.     mkmf
  327.  
  328.  
  329. newtm            :: .SILENT
  330.     if test -d $(TM).md; then
  331.         true
  332.     else
  333.         mkdir $(TM).md;
  334.         chmod 775 $(TM).md;
  335.         mkmf
  336.     fi
  337.  
  338. #
  339. # No profiling for boot programs
  340. #
  341. #profile            : $(TM).md/$(NAME)$(PROFSUFFIX)
  342. #$(TM).md/$(NAME)$(PROFSUFFIX)    : $(OBJS:S/.o$/.po/g) $(LIBS:S/.a$/_p.a/g)
  343. #    $(RM) -f $(.TARGET)
  344. #    $(CC) $(CFLAGS) -pg -o $(.TARGET) $(.ALLSRC)
  345.  
  346.  
  347. tags            :: $(SRCS:M*.c) $(HDRS)
  348.     $(CTAGS) $(CTFLAGS) $(SRCS:M*.c)
  349.  
  350. #
  351. # No version header for boot programs
  352. #
  353. #version.h        :
  354. #    $(RM) -f version.h
  355. #    $(MKVERSION) > version.h
  356.  
  357. #include    <all.mk>
  358.  
  359. #endif no_targets && NAME
  360.  
  361. .MAKEFLAGS    : -C        # No compatibility needed
  362.  
  363. #include    <rdist.mk>
  364.  
  365. DISTFILES    ?=
  366.  
  367. dist        !
  368. #if defined(DISTDIR) && !empty(DISTDIR)
  369.     for i in Makefile local.mk $(TM).md/md.mk \
  370.         $(MANPAGES) $(SRCS) $(HDRS)
  371.     do
  372.     if $(TEST) -e $${i}; then
  373.         $(UPDATE)  $${i} $(DISTDIR)/$${i} ;else true; fi
  374.     done
  375. #else
  376.     @@echo "Sorry, no distribution directory defined"
  377. #endif
  378.  
  379. @
  380.  
  381.  
  382. 1.3
  383. log
  384. @*** empty log message ***
  385. @
  386. text
  387. @d26 1
  388. a26 1
  389. # $Header: /sprite/src/boot/sunprom/RCS/local.mk,v 1.2 90/02/15 02:39:51 rab Exp $
  390. d133 1
  391. a133 1
  392. LINKSTART    ?= $(KERNELSTART:S/0x/b/)
  393. @
  394.  
  395.  
  396. 1.2
  397. log
  398. @Set up distribution stuff.
  399. @
  400. text
  401. @d26 1
  402. a26 1
  403. # $Header: /sprite/src/boot/sunprom/RCS/local.mk,v 1.1 90/02/15 02:20:06 rab Exp Locker: rab $
  404. d133 1
  405. a133 1
  406. LINKSTART    ?= $(KERNELSTART:s/0x/b/)
  407. d136 1
  408. a136 1
  409. LINKSTART    ?= $(KERNELSTART:s/0x/b/)
  410. d234 1
  411. a234 1
  412. $(TM).md/$(NAME)    : $(TM).md/start.o $(OBJS:s/$(TM).md\/start.o//:s/makeBoot.o//) MAKEBOOT
  413. @
  414.  
  415.  
  416. 1.1
  417. log
  418. @Initial revision
  419. @
  420. text
  421. @d26 1
  422. a26 1
  423. # $Header: /sprite/lib/pmake/RCS/boot.mk,v 1.2 89/06/02 11:53:54 brent Exp Locker: jhh $
  424. d61 4
  425. a65 2
  426. LD        ?= $(BINDIR)/ld
  427. CP        ?= $(BINDIR)/cp
  428. d68 1
  429. d70 1
  430. a71 1
  431. MAKEDEPEND    ?= $(BINDIR)/makedepend
  432. d74 2
  433. d77 1
  434. a77 4
  435. SED        ?= $(BINDIR)/sed
  436. CHOWN        ?= $(BINDIR)/chown
  437. CHGRP        ?= $(BINDIR)/chgrp
  438. CHMOD        ?= $(BINDIR)/chmod
  439. d326 15
  440. @
  441.